/*
 * Quad.cpp
 *
 *  Created on: 10/11/2009
 *      Author: ale
 */

#include "Quad.h"

Quad::Quad(const Punto* pts) {
	for (int p = 0; p < 4; ++p) {
		puntos[p] = pts[p];

	}
}


Quad::Quad(const Quad& otro){
	for (int p = 0; p < 4; ++p) {
			puntos[p] = otro.puntos[p];
		}
}

Quad& Quad::operator=(const Quad& otro){
	for (int p = 0; p < 4; ++p) {
				puntos[p] = otro.puntos[p];
	}
	return *this;
}

Quad::~Quad() {

}

/* Quad:
 *   1               2
 *    *---------------*
 *    |				  |
 *    |               |
 *  0 *---------------*3
 */

void Quad::display(){

	glBegin(GL_QUADS);

	glTexCoord2f(0.0, 0.0);
	glVertex3f(puntos[0].x(),puntos[0].y(),puntos[0].z());

	glTexCoord2f(0.0, 1.0);
	glVertex3f(puntos[1].x(),puntos[1].y(),puntos[1].z());

	glTexCoord2f(1.0, 1.0);
	glVertex3f(puntos[2].x(),puntos[2].y(),puntos[2].z());

	glTexCoord2f(1.0, 0.0);
	glVertex3f(puntos[3].x(),puntos[3].y(),puntos[3].z());

	glEnd();
}
Punto Quad::getNormal(){
	Punto a = puntos[1] - puntos[0];
	Punto b = puntos[3] - puntos[0];
	return b.productoVectorial(a);
}

Punto Quad::getTangente(){
	return (puntos[1] - puntos[0]);
}
